// 小程序API接口调用模块
// 基于修改后的postman接口文档生成

// 基础配置
// 注意：baseUrl需要根据实际环境配置
const BASE_URL = 'https://video.gzdcjy.top'; // 可根据需要修改为其他域名

// 通用请求方法
function request(url, data = {}, method = 'POST', header = {}) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: `${BASE_URL}${url}`,
      data: data,
      method: method,
      header: {
        'Content-Type': 'application/json',
        ...header
      },
      success: (res) => {
        if (res.statusCode === 200) {
          resolve(res.data);
        } else {
          reject(res);
        }
      },
      fail: (err) => {
        reject(err);
      }
    });
  });
}

// 文件上传方法
function uploadFile(filePath, formData = {}) {
  return new Promise((resolve, reject) => {
    wx.uploadFile({
      url: `${BASE_URL}/api/miniprogram/upload/file`,
      filePath: filePath,
      name: 'file',
      formData: formData,
      success: (res) => {
        if (res.statusCode === 200) {
          resolve(JSON.parse(res.data));
        } else {
          reject(res);
        }
      },
      fail: (err) => {
        reject(err);
      }
    });
  });
}

// 视频相关API
const videoAPI = {
  // 获取视频列表
  getVideoList(page = 1, per_page = 20, featured = false) {
    return request('/api/miniprogram/videos', {
      page,
      per_page,
      featured
    });
  },

  // 获取视频详情
  getVideoDetail(videoId) {
    return request(`/api/miniprogram/videos/${videoId}`, {
      videoId
    });
  },

  // 点赞视频
  likeVideo(videoId) {
    return request(`/api/miniprogram/videos/${videoId}/like`, {
      videoId
    });
  },

  // 注意：根据最新的postman文档，以下接口已被移除：
  // - getFeaturedVideos (推荐视频)
  // - getVideoCategories (视频分类)
  // - searchVideos (搜索视频)
};

// 文章相关API
const articleAPI = {
  // 获取文章列表
  getArticleList(page = 1, per_page = 20) {
    return request('/api/miniprogram/articles', {
      page,
      per_page
    });
  },

  // 获取文章详情
  getArticleDetail(articleId) {
    return request(`/api/miniprogram/articles/${articleId}`, {
      articleId
    });
  },

  // 点赞文章
  likeArticle(articleId) {
    return request(`/api/miniprogram/articles/${articleId}/like`, {
      articleId
    });
  },

  // 获取每日文章（按日期分组，无分页）
  getDailyArticles() {
    return request('/api/miniprogram/articles/daily', {}, 'POST');
  },

  // 注意：根据最新的postman文档，以下接口已被移除：
  // - getFeaturedArticles (推荐文章)
  // - getH5Articles (H5文章列表)
  // - getCustomArticles (自定义文章列表)
  // - searchArticles (搜索文章)
};

// 文件上传API
const uploadAPI = {
  // 上传文件
  uploadFile(filePath, directory = 'uploads') {
    return uploadFile(filePath, {
      directory
    });
  }
};

// 视频上传API
const videoUploadAPI = {
  // 上传视频（使用文件ID）
  uploadVideo(title, description, video_file_id, cover_file_id) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: `${BASE_URL}/api/miniprogram/upload-video`,
        data: {
          title,
          description,
          video_file_id,
          cover_file_id
        },
        method: 'POST',
        header: {
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        success: (res) => {
          if (res.statusCode === 200) {
            resolve(res.data);
          } else {
            reject(res);
          }
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  },

  // 注意：根据最新的postman文档，以下接口已被移除：
  // - uploadVideoFile (上传视频文件)
  // - getUploadStatus (获取上传状态)
  // - uploadVideoStream (上传视频流)
  // - uploadVideoChunk (分片上传视频)
};

// 导出所有API
module.exports = {
  videoAPI,
  articleAPI,
  uploadAPI,
  videoUploadAPI,
  request,
  uploadFile,
  BASE_URL
};

// 使用示例：
// const { videoAPI, articleAPI, uploadAPI, videoUploadAPI } = require('./interface.js');
// 
// // 获取视频列表
// videoAPI.getVideoList(1, 20).then(res => {
//   console.log('视频列表:', res);
// }).catch(err => {
//   console.error('获取视频列表失败:', err);
// });
// 
// // 获取文章列表
// articleAPI.getArticleList(1, 20).then(res => {
//   console.log('文章列表:', res);
// }).catch(err => {
//   console.error('获取文章列表失败:', err);
// });
//
// // 上传文件
// uploadAPI.uploadFile(filePath, 'uploads').then(res => {
//   console.log('文件上传成功:', res);
// }).catch(err => {
//   console.error('文件上传失败:', err);
// });
//
// // 上传视频
// videoUploadAPI.uploadVideo('视频标题', '视频描述', 'video_file_id', 'cover_file_id').then(res => {
//   console.log('视频上传成功:', res);
// }).catch(err => {
//   console.error('视频上传失败:', err);
// });